import mysql.connector
import os

# MySQL 连接配置
db_config = {
    'user': '11',
    'password': '111!',
    'host': '1111',
    'database': '111',
}

# 导出目录
export_dir = './export'

# 确保导出目录存在
if not os.path.exists(export_dir):
    os.makedirs(export_dir)

# 连接 MySQL
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()


def get_all_tables():
    """获取当前数据库的所有表名"""
    cursor.execute("SHOW TABLES")
    return [table[0] for table in cursor.fetchall()]


def export_table_structure_and_data(table_name):
    """导出表结构和前10条数据到同一个文件"""
    # 导出表结构
    cursor.execute(f"SHOW CREATE TABLE {table_name}")
    result = cursor.fetchone()

    # 导出的文件路径
    file_path = os.path.join(export_dir, f"{table_name}_结构_数据.sql")

    with open(file_path, 'w', encoding='utf-8') as f:
        if result:
            create_table_sql = result[1]
            f.write(f"-- 表结构: {table_name}\n")
            f.write(create_table_sql + ";\n\n")
            print(f"表 {table_name} 的结构已导出到 {file_path}")

        # 导出前10条数据
        cursor.execute(f"SELECT * FROM {table_name} LIMIT 10")
        rows = cursor.fetchall()
        column_names = [i[0] for i in cursor.description]

        if rows:
            f.write(f"-- 数据: {table_name} (前10条记录)\n")
            for row in rows:
                # 生成 INSERT 语句
                values = ', '.join([f"'{str(item)}'" if item is not None else 'NULL' for item in row])
                insert_sql = f"INSERT INTO {table_name} ({', '.join(column_names)}) VALUES ({values});\n"
                f.write(insert_sql)
            f.write("\n")
            print(f"表 {table_name} 的前 10 条数据已导出到 {file_path}")
        else:
            f.write(f"-- 表 {table_name} 中无数据\n")


# 获取当前数据库的所有表
tables = get_all_tables()

# 遍历每个表，导出结构和数据到同一个文件
for table in tables:
    export_table_structure_and_data(table)

# 关闭连接
cursor.close()
conn.close()

print("所有表的结构和数据导出完成。")
